package 力扣_滑动窗口.常考;

/**
 * @author zx
 * @create 2023-03-06 20:29
 */
public class 最大连续1的个数III_1004 {
    /**
     * 题意转换.把[最多可以把 K 个 0 变成 1,求仅包含 1 的最长子数组的长度]转换为
     * [找出一个最长的子数组,该子数组内最多允许有 K 个 0].
     */
    public int longestOnes(int[] nums, int k) {
        int zeros = 0;
        int left = 0;
        int res = 0;
        for(int right = 0;right < nums.length;right++){
            if(nums[right] == 0){
                zeros++;
            }
            while(zeros > k){
                if(nums[left] == 0){
                    zeros--;
                }
                left++;
            }
            res = Math.max(res,right - left + 1);
        }
        return res;
    }
}
